package com.sjy.dao.mapper;


import com.sjy.dao.model.AlarmRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 告警记录 各场景告警记录Mapper接口
 * 
 * @author fans
 * @date 2021-09-09
 */
@Mapper
public interface AlarmRecordMapper 
{
    /**
     * 查询告警记录 各场景告警记录
     * 
     * @param uuid 告警记录 各场景告警记录ID
     * @return 告警记录 各场景告警记录
     */
    public AlarmRecord selectAlarmRecordById(String uuid);

    /**
     * @description 根据身份证查新时间内指定预警类型的最新预警
     * @param objectPlace 身份证
     * @param alarmClass 预警类型
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return com.fans.business.domain.AlarmRecord
     */
    public AlarmRecord selectAlarmRecordByObjectPlace(@Param("objectPlace") String objectPlace,
                                                      @Param("alarmClass") Long alarmClass,
                                                      @Param("startTime") String startTime,
                                                      @Param("endTime") String endTime);

    /**
     * 查询告警记录 各场景告警记录列表
     * 
     * @param alarmRecord 告警记录 各场景告警记录
     * @return 告警记录 各场景告警记录集合
     */
    public List<AlarmRecord> selectAlarmRecordList(AlarmRecord alarmRecord);

    /**
     * @author lyq
     * @description 查询某一天的某类型的记录
     * @create 19:49
     * @update 19:49
     * @param date 日期
     * @param alarmClass 类型
     * @return java.util.List<com.fans.business.domain.AlarmRecord>
     */
    public List<AlarmRecord> selectAlarmRecordToday(@Param("date") String date,@Param("alarmClass") Long alarmClass);

    /**
     * 新增告警记录 各场景告警记录
     * 
     * @param alarmRecord 告警记录 各场景告警记录
     * @return 结果
     */
    public int insertAlarmRecord(AlarmRecord alarmRecord);

    /**
     * 修改告警记录 各场景告警记录
     * 
     * @param alarmRecord 告警记录 各场景告警记录
     * @return 结果
     */
    public int updateAlarmRecord(AlarmRecord alarmRecord);

    /**
     * 删除告警记录 各场景告警记录
     * 
     * @param uuid 告警记录 各场景告警记录ID
     * @return 结果
     */
    public int deleteAlarmRecordById(Long uuid);

    /**
     * 批量删除告警记录 各场景告警记录
     * 
     * @param uuids 需要删除的数据ID
     * @return 结果
     */
    public int deleteAlarmRecordByIds(String[] uuids);

    /**
     * 查询告警记录总数
     * @param alarmRecord
     * @return
     */
    public Integer selectAlarmRecordCount(@Param("alarmRecord") AlarmRecord alarmRecord,@Param("startTime") String startTime);

    /**
     * 查询当天告警记录总数
     * @param alarmRecord
     * @return
     */
    public Integer selectAlarmRecordCountToday(@Param("date") String date,@Param("alarmClass")Long alarmClass);

    /**
     * 根据类型查询当天告警记录总数
     * @param alarmRecord
     * @return
     */
    public List<Integer> selectAlarmRecordCountTodayByType(@Param("date") String date,
                                                     @Param("alarmClass")Long alarmClass,
                                                     @Param("alarmMold")String alarmMold);

    /**
     * 查询每种类型预警的最近一条预警
     * @return
     */
    List<AlarmRecord> selectAlarmRecordByAlarmClass();


    public Long selectPersonCount(AlarmRecord alarmRecord);

    public Long selectEarlyWarningType(int objectType);

    /**
     * 赋予事件编号
     * */
    public int assigneventnumber(@Param("alarmSerial") String alarmSerial,@Param("uuid") String uuid);

    /**
     * 查询单条预警记录
     * */
    public AlarmRecord selectalarmRecordUuid(String uuid);

    Map<String,Object> selectUuid(String uuid);

    List<AlarmRecord> sevenDaysTasks(List<String> sevenDate);

}
